Counts words in a file, outputs results in sorted form :: 자바네트워크I/O[SSISO Community]
 
SSISO 카페 SSISO Source SSISO 구직 SSISO 쇼핑몰 SSISO 맛집
추천검색어 : JUnit   Log4j   ajax   spring   struts   struts-config.xml   Synchronized   책정보   Ajax 마스터하기   우측부분

자바네트워크I/O
[1]
등록일:2008-03-12 09:55:48 (0%)
작성자:
제목:Counts words in a file, outputs results in sorted form
import  java.io.BufferedReader;
import  java.io.FileNotFoundException;
import  java.io.FileReader;
import  java.io.IOException;
import  java.io.StreamTokenizer;
import  java.util.Collection;
import  java.util.Iterator;
import  java.util.Set;
import  java.util.TreeMap;

class  Counter  {
    private  int  i  =  1;

    public  int  read()  {
        return  i;
    }

    public  void  increment()  {
        i++;
    }
}

public  class  WordCount1  {
    private  static  final  String  usage  =  "Usage:  \nWordCount  file\n"
            +  "Counts  the  words  in  the  file  and  "
            +  "outputs  results  in  sorted  form.";

    private  FileReader  file;

    private  StreamTokenizer  st;

    //  A  TreeMap  keeps  keys  in  sorted  order:
    private  TreeMap  counts  =  new  TreeMap();

    public  WordCount1(String  filename)  throws  FileNotFoundException  {
        try  {
            file  =  new  FileReader(filename);
            st  =  new  StreamTokenizer(new  BufferedReader(file));
            st.ordinaryChar('.');
            st.ordinaryChar('-');
        }  catch  (FileNotFoundException  e)  {
            throw  new  RuntimeException(e);
        }
    }

    public  void  dispose()  {
        try  {
            file.close();
        }  catch  (IOException  e)  {
            throw  new  RuntimeException(e);
        }
    }

    public  void  countWords()  {
        try  {
            while  (st.nextToken()  !=  StreamTokenizer.TT_EOF)  {
                String  s;
                switch  (st.ttype)  {
                case  StreamTokenizer.TT_EOL:
                    s  =  new  String("EOL");
                    break;
                case  StreamTokenizer.TT_NUMBER:
                    s  =  Double.toString(st.nval);
                    break;
                case  StreamTokenizer.TT_WORD:
                    s  =  st.sval;  //  Already  a  String
                    break;
                default:  //  single  character  in  ttype
                    s  =  String.valueOf((char)  st.ttype);
                }
                if  (counts.containsKey(s))
                    ((Counter)  counts.get(s)).increment();
                else
                    counts.put(s,  new  Counter());
            }
        }  catch  (IOException  e)  {
            throw  new  RuntimeException(e);
        }
    }

    public  Collection  values()  {
        return  counts.values();
    }

    public  Set  keySet()  {
        return  counts.keySet();
    }

    public  Counter  getCounter(String  s)  {
        return  (Counter)  counts.get(s);
    }

    public  static  void  main(String[]  args)  throws  FileNotFoundException  {
        if  (args.length  ==  0)  {
            System.out.println(usage);
            System.exit(1);
        }
        WordCount1  wc  =  new  WordCount1(args[0]);
        wc.countWords();
        Iterator  keys  =  wc.keySet().iterator();
        while  (keys.hasNext())  {
            String  key  =  (String)  keys.next();
            System.out.println(key  +  ":  "  +  wc.getCounter(key).read());
        }
        wc.dispose();
    }
}  ///:~

파일에  포함된  검색단어  수  출력하는  예제
콘솔에서  자바실행시  파일명을  입력
[본문링크] Counts words in a file, outputs results in sorted form
[1]
코멘트(이글의 트랙백 주소:/cafe/tb_receive.php?no=2520
작성자
비밀번호

 

SSISOCommunity

[이전]

Copyright byCopyright ⓒ2005, SSISO Community All Rights Reserved.